Assembled with sdasm

PRG Banks:8
CHR Banks:0
Mapper: 2
_____ _____ _________________________ ________________________________________
file |prg  | bytes                   | asm code
offst|addr |                         |
-----|-----|-------------------------|----------------------------------------
00000                                 ; --------------------------------------------------
00000                                 ; Patcher
00000                                 ; by SpiderDave, https://spiderdave.me/nes/index.php?c=70-Super-C-Randomizer
00000                                 ; hackers: bogaabogaa, ; artists: hansungkee, ; --------------------------------------------------
00000                                 
00000                                 ; --------------------------------------------------
00000                                 ;ROM
00000                                 ;Database match: Castlevania (USA) (Rev 1)
00000                                 ;Database: No-Intro: Nintendo Entertainment System (v. 20210216-231042)
00000                                 ;File SHA-1: 7A20C44F302FB2F1B7ADFFA6B619E3E1CAE7B546
00000                                 ;File CRC32: 856114C8
00000                                 ;ROM SHA-1: 3DCB69A8C861C041AEB56C04E39ADF6D332EDA3A
00000                                 ;ROM CRC32: B668C7FC
00000                                 ; --------------------------------------------------
00000                                 
00000                                 
00000                                 arch nes.cpu        	; NES architecture
00000                                 banksize $4000      	; size of each prg bank
00000                                 header              	; rom has a header
00000                                 
00000 08000                           org $8000           	; Needed once to set the pc
00000 08000                            
00000 08000                           ; -- Default Settings ------------------------------
00000 08000                           
00000 08000                           listFilename = "list.txt"
00000 08000                           outputFilename = "Castlevania_Practice.nes"
00000 08000                           
00000 08000                           ;incsrc code/RAM_defines.asm
00000 08000                           incsrc code/practice.asm
00000 08000                           trueFrameCounter = $10f
00000 08000                           practiceMenuIndex = $100		; 00 sill check if pause to start..
00000 08000                           practiceMenuCurser = $101
00000 08000                           practiceTextPos = $102
00000 08000                           practiceText_Dest = $103		; dw
00000 08000                           practiceMenuTextPointer = $00	; dw 
00000 08000                           
00000 08000                           ; -- text Table in levels ---------------------------------------------
00000 08000                           ;textmap clear
00000 08000                           mapdb
00000 08000                           textmap 0...9 D0 		 
00000 08000                           textmap A...Z E0		; x=. and Q is a healthbar
00000 08000                           textmap space 00	
00000 08000                           
00000 08000                           
00000 08000                           ; -- Hijacks ---------------------------------------------
18010 08000                           bank 6
1A0A1 0A091                           org $a091
1A0A1 0A091 20 08 BE                  		jsr scoreUpdate
1A0DF 0A0CF                           org $a0cf
1A0DF 0A0CF 4C 11 BE                  		jmp lvl_timeUpdate
1A0E2 0A0D2                           
1C010 08000                           bank 7
1C010 0C000                           base $C000
1C081 0C071                           org $c071
1C081 0C071 20 00 BC                  		jsr NMI_PPU_UPDATES_start 
1C0C2 0C0B2                           org $c0b2
1C0C2 0C0B2 20 00 BE                  		jsr NMI_PPU_UPDATES_end
1C0C5 0C0B5                           
1CF03 0CEF3                           org $cef3		
1CF03 0CEF3 20 28 CF                  		jsr pauseCheck 
1CF06 0CEF6                           		
1CF38 0CF28                           org $cf28
1CF38 0CF28                           	pauseCheck: 	
1CF38 0CF28 A5 23                     		lda $23      	
1CF3A 0CF2A 05 1F                     		ora $1f      	
1CF3C 0CF2C 05 F4                     		ora $f4      	
1CF3E 0CF2E D0 20                     		bne endPauseCheck	
1CF40 0CF30 A5 F5                     		lda $f5      	
1CF42 0CF32 A4 22                     		ldy $22      	
1CF44 0CF34 D0 10                     		bne unPauseCheck  
1CF46 0CF36 29 10                     		and #$10     	
1CF48 0CF38 F0 16                     		beq endPauseCheck	
1CF4A 0CF3A A9 01                     		lda #$01     	
1CF4C 0CF3C 85 22                     		sta $22      	
1CF4E 0CF3E 20 59 93                  		jsr $9359   	
1CF51 0CF41 A9 54                     		lda #$54   		; pause sound and silent  	
1CF53 0CF43 4C A7 C1                  		jmp $c1a7   	
1CF56 0CF46                           		
1CF56 0CF46                           	unPauseCheck:     
1CF56 0CF46 A5 F5                     		lda $f5           
1CF58 0CF48 29 10                             and #$10      
1CF5A 0CF4A F0 04                             beq endPauseCheck 
1CF5C 0CF4C A9 00                             lda #$00      
1CF5E 0CF4E 85 22                             sta $22       
1CF60 0CF50                           	endPauseCheck:     
1CF60 0CF50 60                        		rts          
1CF61 0CF51                           
1CF03 0CEF3                           org $CEF3					; last routine before pause skip
1CF03 0CEF3 20 00 BB                  		jsr practiceRoutine
1CF06 0CEF6                           
1CF06 0CEF6                           
1CF06 0CEF6                           ; -- menu main ---------------------------------------------
1CF06 0CEF6                           
1CF06 0CEF6                           
1CF06 0CEF6                           
18010 08000                           bank 6
1BB10 0BB00                           org $BB00
1BB10 0BB00                           	practiceRoutine:
1BB10 0BB00 20 28 CF                  		jsr $CF28					; hijackFix
1BB13 0BB03                           		phx		
1BB13 0BB03                           		
1BB13 0BB03 20 09 BB                  		jsr pauseGameMenu		
1BB16 0BB06                           		
1BB16 0BB06 A0 00                     		ldy #$00					; restoreState
1BB18 0BB08                           		plx
1BB18 0BB08 60                        		rts 
1BB19 0BB09                           		
1BB19 0BB09                           	pauseGameMenu:						
1BB19 0BB09 AD 00 01                  		lda practiceMenuIndex
1BB1C 0BB0C 0A                        		asl
1BB1D 0BB0D A8                        		tay
1BB1E 0BB0E                           		
1BB1E 0BB0E B9 1C BB                  		lda mainPauseMenu+1,y
1BB21 0BB11 85 01                     		sta $01
1BB23 0BB13 B9 1B BB                  		lda mainPauseMenu,y
1BB26 0BB16 85 00                     		sta $00						; rts + 1 fix
1BB28 0BB18                           		
1BB28 0BB18 6C 00 00                  		jmp ($00)  					; menu jump table
1BB2B 0BB1B                           
1BB2B 0BB1B                           	mainPauseMenu:
1BB2B 0BB1B 43 BB 4B BB               		dw initWhilePause,constructMenu1
1BB2F 0BB1F 3B BB 86 BB               		dw bufferFrame,constructMenu2
1BB33 0BB23 3B BB 8A BC               		dw bufferFrame,drawText
1BB37 0BB27 3B BB B2 BB               		dw bufferFrame,runMenu
1BB3B 0BB2B 3B BB C9 BB               		dw bufferFrame,deconstructMenu
1BB3F 0BB2F 3B BB DC BB               		dw bufferFrame,endMenu
1BB43 0BB33 3B BB 05 BE               		dw bufferFrame,startSubMenu	;0c
1BB47 0BB37 3B BB 09 BE               		dw bufferFrame,RunSubMenu
1BB4B 0BB3B                           
1BB4B 0BB3B                           ; -- menu routines ---------------------------------------------		
1BB4B 0BB3B                           	
1BB4B 0BB3B                           	bufferFrame:
1BB4B 0BB3B A5 1A                     		lda $1a					; the game seems to offload routines to run on even or uneven frames
1BB4D 0BB3D                           		bit #$01
1BB4D 0BB3D B0 03                     		bcs +
1BB4F 0BB3F EE 00 01                  		inc practiceMenuIndex
1BB52 0BB42 60                        	+	rts 
1BB53 0BB43                           	
1BB53 0BB43                           	initWhilePause:
1BB53 0BB43 A5 22                     		lda $22					; check if paused
1BB55 0BB45 F0 03                     		beq +
1BB57 0BB47 EE 00 01                  		inc practiceMenuIndex				
1BB5A 0BB4A 60                        	+	rts 
1BB5B 0BB4B                           		
1BB5B 0BB4B                           	constructMenu1:		
1BB5B 0BB4B A4 20                     		ldy $20
1BB5D 0BB4D A2 31                     		ldx #$31					; set loop size to fill blank
1BB5F 0BB4F                           			
1BB5F 0BB4F A9 01                     		lda #$01
1BB61 0BB51 99 00 07                  		sta $700,y
1BB64 0BB54 C8                        		iny
1BB65 0BB55                           
1BB65 0BB55 A9 20                     		lda #$20
1BB67 0BB57 99 00 07                  		sta $700,y
1BB6A 0BB5A C8                        		iny
1BB6B 0BB5B A9 40                     		lda #$40
1BB6D 0BB5D 99 00 07                  		sta $700,y
1BB70 0BB60 C8                        		iny
1BB71 0BB61                           	
1BB71 0BB61 A9 00                     		lda #$00
1BB73 0BB63 99 00 07                  	-	sta $700,y					; fill loop
1BB76 0BB66 C8                        		iny
1BB77 0BB67 CA                        		dex 
1BB78 0BB68 10 F9                     		bpl -	
1BB7A 0BB6A                           		
1BB7A 0BB6A 88                        		dey
1BB7B 0BB6B 84 20                     		sty $20						; ppu dest and backup table offset		
1BB7D 0BB6D                           						
1BB7D 0BB6D 88                        		dey
1BB7E 0BB6E A9 FF                     		lda #$ff					; end byte for PPU job
1BB80 0BB70 99 00 07                  		sta $700,y
1BB83 0BB73                           		
1BB83 0BB73                           		
1BB83 0BB73 A0 1F                     		LDY #$1f					; remove subweapon Frame
1BB85 0BB75 98                        		TYA
1BB86 0BB76 29 03                     		AND #$03
1BB88 0BB78 AA                        		TAX
1BB89 0BB79 BD AC C5                  	-	LDA $C5AC,X
1BB8C 0BB7C 99 1C 02                  		STA $021C,Y
1BB8F 0BB7F 88                        		DEY
1BB90 0BB80 10 F7                     		BPL -		
1BB92 0BB82                           		
1BB92 0BB82 EE 00 01                  		inc practiceMenuIndex					; this is spliced in two parts so it runs without glitching		
1BB95 0BB85                           ;		dec $19						; pulling game subMode to 5 to prevent HUD updates
1BB95 0BB85 60                        		rts
1BB96 0BB86                           		
1BB96 0BB86                           	constructMenu2:
1BB96 0BB86 A4 20                     		ldy $20
1BB98 0BB88 A2 31                     		ldx #$31					; set loop size to fill blank
1BB9A 0BB8A                           	
1BB9A 0BB8A A9 01                     		lda #$01
1BB9C 0BB8C 99 00 07                  		sta $700,y
1BB9F 0BB8F C8                        		iny
1BBA0 0BB90                           
1BBA0 0BB90 A9 20                     		lda #$20
1BBA2 0BB92 99 00 07                  		sta $700,y
1BBA5 0BB95 C8                        		iny
1BBA6 0BB96 A9 70                     		lda #$70
1BBA8 0BB98 99 00 07                  		sta $700,y
1BBAB 0BB9B C8                        		iny
1BBAC 0BB9C                           	
1BBAC 0BB9C A9 00                     		lda #$00
1BBAE 0BB9E 99 00 07                  	-	sta $700,y					; fill loop
1BBB1 0BBA1 C8                        		iny
1BBB2 0BBA2 CA                        		dex 
1BBB3 0BBA3 10 F9                     		bpl -						
1BBB5 0BBA5                           		
1BBB5 0BBA5 88                        		dey
1BBB6 0BBA6 84 20                     		sty $20						; ppu dest and backup table offset		
1BBB8 0BBA8                           						
1BBB8 0BBA8 88                        		dey
1BBB9 0BBA9 A9 FF                     		lda #$ff					; end byte for PPU job
1BBBB 0BBAB 99 00 07                  		sta $700,y
1BBBE 0BBAE                           		
1BBBE 0BBAE EE 00 01                  		inc practiceMenuIndex						; run menu next frame 		
1BBC1 0BBB1 60                        		rts
1BBC2 0BBB2                           		
1BBC2 0BBB2                           		
1BBC2 0BBB2                           		
1BBC2 0BBB2                           	runMenu:		
1BBC2 0BBB2 A9 00                     		lda #$00						; sign no PPU update in case we do nothing
1BBC4 0BBB4 8D 00 07                  		sta $700
1BBC7 0BBB7                           		
1BBC7 0BBB7 A9 F0                     		lda #$f0						; move sprite 0 to not glitch text bothom 
1BBC9 0BBB9 8D 02 02                  		sta $202
1BBCC 0BBBC                           		
1BBCC 0BBBC 20 78 BD                  		jsr curserLogic
1BBCF 0BBBF                           
1BBCF 0BBBF                           
1BBCF 0BBBF A5 F5                     		lda $f5							; exit menu with start
1BBD1 0BBC1 C9 10                     		cmp #$10
1BBD3 0BBC3 D0 03                     		bne +
1BBD5 0BBC5 EE 00 01                  		inc practiceMenuIndex
1BBD8 0BBC8 60                        	+	rts 
1BBD9 0BBC9                           	
1BBD9 0BBC9                           	
1BBD9 0BBC9                           	deconstructMenu:
1BBD9 0BBC9 A4 20                     		ldy $20
1BBDB 0BBCB                           
1BBDB 0BBCB B9 02 BC                  	-	lda HUD_TABLE_RESTOR_1,y		; restor HUD Tables
1BBDE 0BBCE 99 00 07                  		sta $700,y
1BBE1 0BBD1 C8                        		iny 
1BBE2 0BBD2 C9 FF                     		cmp #$ff
1BBE4 0BBD4 D0 F5                     		bne -	
1BBE6 0BBD6                           		
1BBE6 0BBD6 84 20                     		sty $20
1BBE8 0BBD8                           		
1BBE8 0BBD8 EE 00 01                  		inc practiceMenuIndex
1BBEB 0BBDB 60                        		rts 
1BBEC 0BBDC                           	
1BBEC 0BBDC                           	endMenu:			
1BBEC 0BBDC A4 20                     		ldy $20
1BBEE 0BBDE                           
1BBEE 0BBDE B9 56 BC                  	-	lda HUD_TABLE_RESTOR_2,y		; restor HUD Tables
1BBF1 0BBE1 99 00 07                  		sta $700,y
1BBF4 0BBE4 C8                        		iny 
1BBF5 0BBE5 C9 FF                     		cmp #$ff
1BBF7 0BBE7 D0 F5                     		bne -	
1BBF9 0BBE9                           
1BBF9 0BBE9 84 20                     		sty $20
1BBFB 0BBEB                           		
1BBFB 0BBEB A2 1F                     		LDX #$1f					; rebuild subweapon Frame
1BBFD 0BBED BD B0 A1                  	-	LDA $A1B0,X
1BC00 0BBF0 9D 1C 02                  		STA $021C,X
1BC03 0BBF3 CA                        		DEX
1BC04 0BBF4 10 F7                     		BPL -		
1BC06 0BBF6                           	
1BC06 0BBF6 A9 00                     		lda #$00					; set exit menu 				
1BC08 0BBF8 8D 00 01                  		sta practiceMenuIndex					
1BC0B 0BBFB 8D 01 01                  		sta practiceMenuCurser					; close subMenu
1BC0E 0BBFE 8D 02 01                  		sta practiceTextPos
1BC11 0BC01                           ;		inc $19						; set to play mode subMabeState 06 
1BC11 0BC01 60                        		rts
1BC12 0BC02                           
1BC12 0BC02                           
1BC12 0BC02                           ; -- HUD and pointer data ---------------------------------------------		
1BC12 0BC02                           	HUD_TABLE_RESTOR_1:
1BC12 0BC02 01                        		db $01									; set
1BC13 0BC03 20 20                     		db $20,$20								; PPU dest
1BC15 0BC05 00 00 00 00 00 00 00 00   		db $00,$00,$00,$00,$00,$00,$00,$00		; data
1BC1D 0BC0D 00 00 00 00 00 00 00 00   		db $00,$00,$00,$00,$00,$00,$00,$00
1BC25 0BC15 00 00 00 00 00 00 00 00   		db $00,$00,$00,$00,$00,$00,$00,$00
1BC2D 0BC1D 00 00 00 00 00 00 00 00   		db $00,$00,$00,$00,$00,$00,$00,$00
1BC35 0BC25 F2 E2 EE F1 E4 DD D0 D0   		db $F2,$E2,$EE,$F1,$E4,$DD,$D0,$D0		
1BC3D 0BC2D D0 D0 D0 D0 00 F3 E8 EC   		db $D0,$D0,$D0,$D0,$00,$F3,$E8,$EC
1BC45 0BC35 E4 00 D0 D3 D0 D0 00 F2   		db $E4,$00,$D0,$D3,$D0,$D0,$00,$F2
1BC4D 0BC3D F3 E0 E6 E4 00 D0 D1 00   		db $F3,$E0,$E6,$E4,$00,$D0,$D1,$00
1BC55 0BC45 EF EB E0 F8 E4 F1 00 DA   		db $EF,$EB,$E0,$F8,$E4,$F1,$00,$DA
1BC5D 0BC4D DA DA DA DA DA DA DA 00   		db $DA,$DA,$DA,$DA,$DA,$DA,$DA,$00
1BC65 0BC55 FF                        		db $FF									; end job byte
1BC66 0BC56                           	HUD_TABLE_RESTOR_2:
1BC66 0BC56 01                        		db $01									; set 
1BC67 0BC57 20 70                     		db $20,$70								; PPU dest
1BC69 0BC59 00 00 00 00 00 DC DD D0   		db $00,$00,$00,$00,$00,$DC,$DD,$D0		; data
1BC71 0BC61 D5 00 00 00 00 00 00 00   		db $D5,$00,$00,$00,$00,$00,$00,$00
1BC79 0BC69 E4 ED E4 EC F8 00 00 DF   		db $E4,$ED,$E4,$EC,$F8,$00,$00,$DF
1BC81 0BC71 DF DF DF DF DF DF DF 00   		db $DF,$DF,$DF,$DF,$DF,$DF,$DF,$00
1BC89 0BC79 00 00 00 00 00 EF DD D0   		db $00,$00,$00,$00,$00,$EF,$DD,$D0
1BC91 0BC81 D3 00 00 00 00 00 00 00   		db $D3,$00,$00,$00,$00,$00,$00,$00
1BC99 0BC89 FF                        		db $FF									; end job byte
1BC9A 0BC8A                           	
1BC9A 0BC8A                           		
1BC9A 0BC8A                           	
1BC9A 0BC8A                           ; -- submenu routines ---------------------------------------------	
1BC9A 0BC8A                           	
1BC9A 0BC8A                           	drawText:			
1BC9A 0BC8A A9 23                     		lda #$23 						; set destination Base Pointer
1BC9C 0BC8C 8D 03 01                  		sta practiceText_Dest
1BC9F 0BC8F A9 20                     		lda #$20
1BCA1 0BC91 8D 04 01                  		sta practiceText_Dest+1
1BCA4 0BC94                           		
1BCA4 0BC94 A9 00                     		lda #$00						; a counter to count 4 words to print
1BCA6 0BC96 85 02                     		sta $02							
1BCA8 0BC98 A6 20                     		ldx $20							; text draw loop 	
1BCAA 0BC9A AD 02 01                  		lda practiceTextPos
1BCAD 0BC9D 0A                        		asl
1BCAE 0BC9E A8                        		tay
1BCAF 0BC9F                           
1BCAF 0BC9F                           	drawTextLoop:						; setBasePointer
1BCAF 0BC9F B9 F9 BC                  		lda text_Table,y
1BCB2 0BCA2 85 00                     		sta practiceMenuTextPointer
1BCB4 0BCA4                           		
1BCB4 0BCA4 B9 FA BC                  		lda text_Table+1,y
1BCB7 0BCA7 85 01                     		sta practiceMenuTextPointer+1
1BCB9 0BCA9 C9 FF                     		cmp #$ff						; check for end of text table. Just dont store text at $FFXX
1BCBB 0BCAB D0 08                     		bne +
1BCBD 0BCAD 88                        		dey								; stop table to advance
1BCBE 0BCAE 88                        		dey
1BCBF 0BCAF 8C 02 01                  		sty practiceTextPos
1BCC2 0BCB2 4C 9F BC                  		jmp drawTextLoop
1BCC5 0BCB5                           	
1BCC5 0BCB5 A9 01                     	+	lda #$01						; set job and destination 
1BCC7 0BCB7 9D 00 07                  		sta $700,x		
1BCCA 0BCBA E8                        		inx
1BCCB 0BCBB                           		
1BCCB 0BCBB AD 04 01                  		lda practiceText_Dest+1			; set destination pointer
1BCCE 0BCBE 9D 00 07                  		sta $700,x
1BCD1 0BCC1 E8                        		inx
1BCD2 0BCC2 AD 03 01                  		lda practiceText_Dest		
1BCD5 0BCC5 9D 00 07                  		sta $700,x	
1BCD8 0BCC8 E8                        		inx				
1BCD9 0BCC9                           		
1BCD9 0BCC9 98                        		tya								; backup to keep track of text pointer
1BCDA 0BCCA 48                        		pha
1BCDB 0BCCB                           
1BCDB 0BCCB A0 00                     		ldy #$00		
1BCDD 0BCCD B1 00                     	-	lda ($00),y						; write text loop
1BCDF 0BCCF 9D 00 07                  		sta $700,x
1BCE2 0BCD2 E8                        		inx
1BCE3 0BCD3 C8                        		iny
1BCE4 0BCD4 C9 FF                     		cmp #$ff
1BCE6 0BCD6 D0 F5                     		bne -
1BCE8 0BCD8                           		
1BCE8 0BCD8 68                        		pla
1BCE9 0BCD9 A8                        		tay
1BCEA 0BCDA                           		
1BCEA 0BCDA C8                        		iny
1BCEB 0BCDB C8                        		iny
1BCEC 0BCDC                           		
1BCEC 0BCDC AD 03 01                  		lda practiceText_Dest			; put base to next line of menu entery 
1BCEF 0BCDF 18                        		clc 
1BCF0 0BCE0 69 20                     		adc #$20
1BCF2 0BCE2 8D 03 01                  		sta practiceText_Dest
1BCF5 0BCE5                           		
1BCF5 0BCE5 A5 02                     		lda $02							; check if we did draw 4 words 
1BCF7 0BCE7 18                        		clc
1BCF8 0BCE8 69 01                     		adc #$01
1BCFA 0BCEA 85 02                     		sta $02
1BCFC 0BCEC C9 04                     		cmp #$04							
1BCFE 0BCEE F0 03                     		beq endDrawTextLoop
1BD00 0BCF0 4C 9F BC                  		jmp drawTextLoop
1BD03 0BCF3                           		
1BD03 0BCF3                           	endDrawTextLoop:
1BD03 0BCF3 86 20                     		stx $20
1BD05 0BCF5                           		
1BD05 0BCF5 EE 00 01                  		inc practiceMenuIndex							; go to sub menu logic	
1BD08 0BCF8 60                        		rts
1BD09 0BCF9                           		
1BD09 0BCF9                           	text_Table:
1BD09 0BCF9 13 BD 20 BD 2D BD 3A BD   		dw text_gameMod,text_goToLevel,text_giveItem,text_colorMode
1BD11 0BD01 47 BD 47 BD 47 BD 47 BD   		dw text_placeHolder,text_placeHolder,text_placeHolder,text_placeHolder
1BD19 0BD09 47 BD 47 BD 47 BD 47 BD   		dw text_placeHolder,text_placeHolder,text_placeHolder,text_placeHolder
1BD21 0BD11 FF FF                     		dw $ffff
1BD23 0BD13                           	text_Program_Table:
1BD23 0BD13                           ;		dw program_gameMod,program_goToLevel,program_giveItem,program_colorMode
1BD23 0BD13                           ;		dw program_placeHolder,program_placeHolder,program_placeHolder,program_placeHolder
1BD23 0BD13                           ;		dw program_placeHolder,program_placeHolder,program_placeHolder,program_placeHolder
1BD23 0BD13                           ;		dw $ffff
1BD23 0BD13                           	
1BD23 0BD13                           	text_gameMod:
1BD23 0BD13 E6 E0 EC E4 00 EC EE E3.. 		db 'GAME MODE   ',$ff					; we waste space so it clears out other names when scrolling list
1BD30 0BD20                           	text_goToLevel:
1BD30 0BD20 F2 E4 EB E4 E2 F3 00 EB.. 		db 'SELECT LEVEL',$ff	
1BD3D 0BD2D                           	text_giveItem:
1BD3D 0BD2D E6 E8 F5 E4 00 E8 F3 E4.. 		db 'GIVE ITEM   ',$ff
1BD4A 0BD3A                           	text_colorMode:
1BD4A 0BD3A E2 EE EB EE F1 00 EC EE.. 		db 'COLOR MODE  ',$ff	
1BD57 0BD47                           	text_placeHolder:
1BD57 0BD47 EF EB E0 E2 E4 00 E7 EE.. 		db 'PLACE HOLDER',$ff	
1BD64 0BD54                           	text_blank:
1BD64 0BD54 00 00 00 00 00 00 00 00.. 		db '            ',$FF
1BD71 0BD61                           		
1BD71 0BD61                           	curserBytes
1BD71 0BD61 01 00 00 DC FF 00         		db $01,$00,$00,$dc,$ff,$00	
1BD77 0BD67                           	menuCurserPos:
1BD77 0BD67 21 20 41 20 61 20 81 20.. 		dw $2021,$2041,$2061,$2081,$ff,$ff	
1BD83 0BD73                           
1BD83 0BD73 A9 0C                     		lda #$0C								; enter sub menu 
1BD85 0BD75 8D 00 01                  		sta practiceMenuIndex	
1BD88 0BD78                           	
1BD88 0BD78                           	curserLogic:	; ------------------- curser logic -------------------------------			
1BD88 0BD78 A4 20                     		ldy $20									; curser to table
1BD8A 0BD7A B9 61 BD                  	-	lda curserBytes,y
1BD8D 0BD7D 99 00 07                  		sta $700,y
1BD90 0BD80 C8                        		iny 
1BD91 0BD81 C9 FF                     		cmp #$ff
1BD93 0BD83 D0 F5                     		bne -
1BD95 0BD85 84 20                     		sty $20
1BD97 0BD87                           ;		iny
1BD97 0BD87                           ;		sta $700,y								; make it the last job.. game takes care of it before updateing..
1BD97 0BD87                           	
1BD97 0BD87                           	updateCurserPos:
1BD97 0BD87 AD 01 01                  		lda practiceMenuCurser					; update pos
1BD9A 0BD8A 0A                        		asl 
1BD9B 0BD8B AA                        		tax
1BD9C 0BD8C                           		
1BD9C 0BD8C BD 68 BD                  		lda menuCurserPos+1,x
1BD9F 0BD8F 8D 01 07                  		sta $701
1BDA2 0BD92 BD 67 BD                  		lda menuCurserPos,x
1BDA5 0BD95 8D 02 07                  		sta $702
1BDA8 0BD98 C9 FF                     		cmp #$ff								; check end of table	
1BDAA 0BD9A D0 08                     		bne +
1BDAC 0BD9C                           		
1BDAC 0BD9C A9 03                     		lda #$03								; end of selection range							
1BDAE 0BD9E 8D 01 01                  		sta practiceMenuCurser
1BDB1 0BDA1 4C 87 BD                  		jmp updateCurserPos				
1BDB4 0BDA4                           
1BDB4 0BDA4                           								
1BDB4 0BDA4 A5 F5                     	+	lda $f5	; ------------------- press down -------------------------------
1BDB6 0BDA6                           
1BDB6 0BDA6                           		
1BDB6 0BDA6 C9 04                     		cmp #$04
1BDB8 0BDA8 D0 28                     		bne checkUpButtonInMenu
1BDBA 0BDAA                           		
1BDBA 0BDAA A9 00                     		lda #$00								; undraw Heart
1BDBC 0BDAC 8D 03 07                  		sta $703								
1BDBF 0BDAF                           		
1BDBF 0BDAF AD 01 01                  		lda practiceMenuCurser					; when we reach the end of the line we increase the text pointer
1BDC2 0BDB2 18                        		clc
1BDC3 0BDB3 69 01                     		adc #$01
1BDC5 0BDB5 C9 04                     		cmp #$04
1BDC7 0BDB7 D0 11                     		bne +
1BDC9 0BDB9                           		
1BDC9 0BDB9 6D 02 01                  		adc practiceTextPos				; check if we are at the end of the list
1BDCC 0BDBC 0A                        		asl
1BDCD 0BDBD A8                        		tay
1BDCE 0BDBE B9 F9 BC                  		lda text_Table,y
1BDD1 0BDC1 C9 FF                     		cmp #$ff
1BDD3 0BDC3 F0 0D                     		beq checkUpButtonInMenu
1BDD5 0BDC5                           		
1BDD5 0BDC5 EE 02 01                  		inc practiceTextPos
1BDD8 0BDC8 10 03                     		bpl ++
1BDDA 0BDCA                           	
1BDDA 0BDCA 8D 01 01                  	+	sta practiceMenuCurser
1BDDD 0BDCD A9 02                     	++	lda #$02								; clear redraw
1BDDF 0BDCF 8D 00 01                  		sta practiceMenuIndex
1BDE2 0BDD2                           		
1BDE2 0BDD2                           	checkUpButtonInMenu:	
1BDE2 0BDD2 A5 F5                     		lda $f5	; ------------------- press up -------------------------------	
1BDE4 0BDD4 C9 08                     		cmp #$08
1BDE6 0BDD6 D0 21                     		bne endCurserPos
1BDE8 0BDD8                           		
1BDE8 0BDD8 A9 00                     		lda #$00								; undraw Heart
1BDEA 0BDDA 8D 03 07                  		sta $703								
1BDED 0BDDD                           		
1BDED 0BDDD AD 01 01                  		lda practiceMenuCurser					; when we reach the end of the line we increase the text pointer
1BDF0 0BDE0 38                        		sec
1BDF1 0BDE1 E9 01                     		sbc #$01
1BDF3 0BDE3 C9 FF                     		cmp #$FF
1BDF5 0BDE5 D0 0A                     		bne +
1BDF7 0BDE7                           		
1BDF7 0BDE7 6D 02 01                  		adc practiceTextPos				; check if we are at the end of the list
1BDFA 0BDEA F0 0D                     		beq endCurserPos
1BDFC 0BDEC                           		
1BDFC 0BDEC CE 02 01                  		dec practiceTextPos
1BDFF 0BDEF 10 03                     		bpl ++
1BE01 0BDF1                           	
1BE01 0BDF1 8D 01 01                  	+	sta practiceMenuCurser
1BE04 0BDF4 A9 02                     	++	lda #$02								; clear redraw
1BE06 0BDF6 8D 00 01                  		sta practiceMenuIndex
1BE09 0BDF9                           		
1BE09 0BDF9                           	 endCurserPos:	
1BE09 0BDF9 A5 F5                     		lda $f5									; pressing A button
1BE0B 0BDFB C9 80                     		cmp #$80
1BE0D 0BDFD D0 05                     		bne +
1BE0F 0BDFF                           		
1BE0F 0BDFF A9 00                     		lda #$00								; undraw Heart
1BE11 0BE01 8D 03 07                  		sta $703								
1BE14 0BE04                           		
1BE14 0BE04                           ;		lda #$0C								; enter sub menu 
1BE14 0BE04                           ;		sta practiceMenuIndex	
1BE14 0BE04 60                        	+	rts 
1BE15 0BE05                           	
1BE15 0BE05                           	
1BE15 0BE05                           	startSubMenu:
1BE15 0BE05 EE 00 01                  		inc practiceMenuIndex
1BE18 0BE08 60                        		rts 
1BE19 0BE09                           		
1BE19 0BE09                           
1BE19 0BE09                           	RunSubMenu:
1BE19 0BE09 A5 F5                     		lda $f5
1BE1B 0BE0B C9 01                     		cmp #$01
1BE1D 0BE0D D0 00                     		bne +
1BE1F 0BE0F                           		
1BE1F 0BE0F A5 F5                     	+	lda $f5	
1BE21 0BE11 C9 80                     		cmp #$80
1BE23 0BE13 F0 00                     		beq +
1BE25 0BE15                           		
1BE25 0BE15 60                        	+	rts 
1BE26 0BE16                           
1BE26 0BE16                           	
1BE26 0BE16                           
1BE26 0BE16                           		
1BE26 0BE16                           
1BE26 0BE16                           		
1BE26 0BE16                           
1BE26 0BE16                           ;	program_gameMod:
1BE26 0BE16                           ;		nop
1BE26 0BE16                           ;		lda $f5
1BE26 0BE16                           ;		cmp #$80
1BE26 0BE16                           ;		bne +
1BE26 0BE16                           ;		
1BE26 0BE16                           ;	+	rts 
1BE26 0BE16                           ;	program_goToLevel:
1BE26 0BE16                           ;		nop
1BE26 0BE16                           ;		lda $f5
1BE26 0BE16                           ;		cmp #$80
1BE26 0BE16                           ;		bne +
1BE26 0BE16                           ;		
1BE26 0BE16                           ;	+	rts 
1BE26 0BE16                           ;	program_giveItem:
1BE26 0BE16                           ;		nop
1BE26 0BE16                           ;		lda $f5
1BE26 0BE16                           ;		cmp #$80
1BE26 0BE16                           ;		bne +
1BE26 0BE16                           ;		
1BE26 0BE16                           ;	+	rts 
1BE26 0BE16                           ;	program_colorMode:
1BE26 0BE16                           ;		nop
1BE26 0BE16                           ;		lda $f5
1BE26 0BE16                           ;		cmp #$80
1BE26 0BE16                           ;		bne +
1BE26 0BE16                           ;		
1BE26 0BE16                           ;	+	rts 
1BE26 0BE16                           ;	program_placeHolder:
1BE26 0BE16                           ;		nop
1BE26 0BE16                           ;		lda $f5
1BE26 0BE16                           ;		cmp #$80
1BE26 0BE16                           ;		bne +
1BE26 0BE16                           ;		
1BE26 0BE16                           ;	+	rts 	
1BE26 0BE16                           
1BE26 0BE16                           ; ------------------- non menu functions -------------------------------
1BE26 0BE16                           
00010 08000                           bank 0
03C10 0BC00                           org $bc00
03C10 0BC00                           	NMI_PPU_UPDATES_start:
03C10 0BC00 20 0A 80                  		jsr $800a         	; hijackFix PPU update jobs
03C13 0BC03 20 0B BC                  		jsr menuDrawUpdates	; while pause we get rid of other PPU updates 
03C16 0BC06 A5 22                     		lda $22
03C18 0BC08 F0 00                     		beq +
03C1A 0BC0A                           							; do while pause
03C1A 0BC0A                           
03C1A 0BC0A                           		
03C1A 0BC0A 60                        	+	rts 
03C1B 0BC0B                           	
03C1B 0BC0B                           	menuDrawUpdates:	
03C1B 0BC0B 60                        		rts 
03C1C 0BC0C                           		
03C1C 0BC0C                           ;		lda $2002		   	; PPUSTATUS   read resets write pair for $2005/$2006 
03C1C 0BC0C                           ;		
03C1C 0BC0C                           ;		ldy #$01
03C1C 0BC0C                           ;	
03C1C 0BC0C                           ;		lda $700,y        					
03C1C 0BC0C                           ;		sta $2006			; PPUADDR to put the data   
03C1C 0BC0C                           ;        iny                 
03C1C 0BC0C                           ;        lda $700,y        
03C1C 0BC0C                           ;        sta $2006			; PPUADDR      
03C1C 0BC0C                           ;        
03C1C 0BC0C                           ;		lda #$07
03C1C 0BC0C                           ;		sta $01
03C1C 0BC0C                           ;		lda #$03			; take the size of the update
03C1C 0BC0C                           ;		sta $00
03C1C 0BC0C                           ;		
03C1C 0BC0C                           ;		lda $700
03C1C 0BC0C                           ;		tay	
03C1C 0BC0C                           ;		
03C1C 0BC0C                           ;	-	lda ($00),y 
03C1C 0BC0C                           ;		sta $2007 			; PPUDATA  feed loop
03C1C 0BC0C                           ;        dey
03C1C 0BC0C                           ;		bpl -             	; $8044: c8        
03C1C 0BC0C                           ;		
03C1C 0BC0C                           ;		
03C1C 0BC0C                           ;		rts   
03C1C 0BC0C                           
18010 08000                           bank 6
1BE10 0BE00                           org $BE00		
1BE10 0BE00                           NMI_PPU_UPDATES_end:
1BE10 0BE00 20 EE CC                  		jsr $ccee 			; hijackFix	
1BE13 0BE03 A5 22                     		lda $22
1BE15 0BE05 F0 00                     		beq +
1BE17 0BE07                           							; do while pause
1BE17 0BE07                           		
1BE17 0BE07 60                        	+	rts 
1BE18 0BE08                           
1BE18 0BE08                           scoreUpdate:	
1BE18 0BE08 AD 00 01                  		lda practiceMenuIndex
1BE1B 0BE0B D0 03                     		bne +
1BE1D 0BE0D                           							; skip while menu
1BE1D 0BE0D 20 7A CC                  		jsr $cc7a         	; hijackFix	
1BE20 0BE10 60                        	+	rts 
1BE21 0BE11                           	
1BE21 0BE11                           lvl_timeUpdate:		
1BE21 0BE11 48                        		pha
1BE22 0BE12 AD 00 01                  		lda practiceMenuIndex
1BE25 0BE15 D0 05                     		bne +
1BE27 0BE17 68                        		pla
1BE28 0BE18 4C D2 A0                  		jmp $a0d2			; hijackFix
1BE2B 0BE1B                           
1BE2B 0BE1B 60                        		rts
1BE2C 0BE1C 68                        	+	pla
1BE2D 0BE1D                           
1BE2D 0BE1D 4C 10 A1                  		jmp $a110 
1BE30 0BE20                           
1BE30 0BE20                           
1BE30 0BE20                           listFile {listFilename}
1BE30 0BE20                           outputFile {outputFilename}

